<template>
  <div o-Container>
    <o-item v-bind:source="item.language" v-bind="{saved:save,backed:back}"></o-item>
    <o-item v-bind:source="item.datacolumn" v-bind="{loaded:load}"></o-item>
  </div>
</template>

<script>
  export default {
    name: "mms_engine_datacolumn_item", /* 这个name暂时不知道用啥用，根据官方文档说的是方便排错的 */
    data() {
      return {
        octopus: this.$parent.octopus,
        item: {
          language: {
            data: {
              id: 17,
              value: null,
              cellData: [{name: "CN"},
                {name: "ZH"},
                {name: "EN"},
                {name: "JP"},
                {name: "KR"},
                {name: "CreateDate"}]
            },
            // 自定义button按钮，开发者选项。
            button: [{class: "warning", click: this.translate, text: "Translate"}]
          },
          datacolumn: {
            data: {
              id: 20,
              value: "#{param=id}",
              cellData: [{name: "Name"},
                {name: "ControlTypeID"},
                {name: "ControlSourceID"},
                {name: "ControlSourceText"},
                {name: "ControlSourceValue"},
                {name: "ControlSourceOrder"},
                {name: "ControlSourceParentKey"},
                {name: "ControlSourceParentValue"},
                {name: "IsNull"},
                {name: "IsDisabled"},
                {name: "IsEncryption"},
                {name: "IsHierarchy"},
                {name: "DefaultValue"},
                {name: "TableID", show: false},
                {name: "RasterizeXS"},
                {name: "RasterizeSM"},
                {name: "RasterizeMD"},
                {name: "RasterizeLG"},
                {name: "Height"},
                {name: "Width"},
                {name: "MinLength"},
                {name: "MaxLength"},
                {name: "LanguageID", show: false},
                {name: "Note"},
                {name: "CreateDate"},]
            },
          },
        },
      }
    },
    mounted: function () {
    },
    methods: {
      // 数据源列数据加载完成后的事件
      load: function () {
        // 数据源列编辑页，列肯定是有数据的，这个功能不允许自己创建新列的。
        if (this.item.datacolumn.data.value) {
          // Menu菜单加载完成后，将值赋值给语言对象
          this.item.language.data.value = $.grep(this.item.datacolumn.data.cellData, function (value) {
            return value.name == "LanguageID";//筛选出语言ID编号
          })[0].defaultValue;
          // 这里调用控件对象的方法。
          this.item.language.control.load();
        }
      },
      // 保存后回调事件，主控件为主的，子控件依赖主控件的，可在主控件保存后调用子控件的save。
      // 回调时因为数据是全部钩子动态绑定的，唯独因为创建会把保存类型给冲掉，所以这样要回传保存的类型
      save: function (data) {
        if (data.status.code == 200) {
          // 在Menu数据源中找到LanguageID变量并设置
          $.grep(this.item.datacolumn.data.cellData, function (value) {
            return value.name == "LanguageID";//筛选出语言ID编号
          })[0].defaultValue = this.item.language.data.value;
          // 执行菜单表的保存，组件内部会自动识别是创建还是更新。
          this.item.datacolumn.control.save();
          this.octopus.tips.success("[" + data.status.code + "] Data Save Success.");
        } else {
          this.octopus.tips.error(data);
        }
      },
      back: function () {
        let TableID = $.grep(this.item.datacolumn.data.cellData, function (curr, i) {
          return curr.name == "TableID";
        });
        if (TableID.length == 1) {
          this.octopus.router.jump("/MMS/Engine/Datasource/Modify?id=" + TableID[0].defaultValue);
        }
      },
      create: function () {
        // 手动触发注销函数。
        // this.item.datacolumnbind.control.destroyData();
        // this.item.datacolumnbind.control.load();
      },
      translate: function () {
        let o = this;
        let CN = flm("CN");
        let language = ["ZH", "EN", "JP", "KR"];
        // 如果中文有值，才进入。
        if (!this.octopus.tools.IsNullOrEmpty(CN.defaultValue)) {
          // 翻译为繁体
          this.octopus.tools.translate(CN.defaultValue, "zh", "cht", function (cht_data) {
            flm("ZH").defaultValue = cht_data;
            o.octopus.tools.translate(CN.defaultValue, "zh", "en", function (en_data) {
              flm("EN").defaultValue = en_data;
              o.octopus.tools.translate(CN.defaultValue, "zh", "jp", function (jp_data) {
                flm("JP").defaultValue = jp_data;
                o.octopus.tools.translate(CN.defaultValue, "zh", "kor", function (kr_data) {
                  flm("KR").defaultValue = kr_data;
                  // 延迟500毫秒给vue一个反应的时间。
                  setTimeout(function () {
                    // 执行保存
                    o.item.language.control.save();
                  }, 500);
                });
              });
            });
          });
        } else {
          this.octopus.tips.warning("ChineseBox is not null, Translate service failed.")
        }

        // find language module
        function flm(code) {
          return $.grep(o.item.language.data.cellData, function (value) {
            return value.name == code;//筛选出语言ID编号
          })[0]
        }
      },
    },
    props: ["oData"]
  }
</script>

